//
//  ZHSegmentStyle.swift
//  ZHPageView
//
//  Created by Rango on 2020/8/27.
//  Copyright © 2020 Rango. All rights reserved.
//

import UIKit

enum ZHIndicatorType {
    /// 线
    case line
    /// 遮罩
    case cover
    /// 自定义
    case custom
}

enum ZHIndicatorAnimaType {
    /// 指示器跟随内容滑动实时改变
    case `default`
    /// 内容滑动结束指示器改变
    case end
    /// 无切换无动画,无论是点击和是拖拽
    case none
}
/// 内容滚动方向
enum ZHScrollDirection {
    /// 向左 ◀️
    case left
    /// 向右 ▶️
    case right
    /// 向上 🔽
    case top
    /// 向下 🔽
    case bottom
}

class ZHSegmentStyle: NSObject {
    // font
    // scale
    // color
    // alignment
    // shadow
    
    /// 是否缩放标题 默认 false
    var isScaleTitle: Bool = false
    /// 是否渐变改变标题颜色(标题颜色必须使用 RGB 颜色) 默认 false
    var isGradientTitleColor: Bool = false
    /// 是否根据文本内容自适应标题宽度 默认 true
    var isAutoTitleWidth: Bool = true
    /// 是否开启标题拖拽弹簧效果 默认 true
    var isTitleBounces: Bool = true
    
    /// 是否可以拖拽内容视图切换标题 默认 true
    var isContentScrollEnabled: Bool = true
    /// 是否开启内容视图切换动画(针对点击标题切换的方式,true .push; false .fade) 默认 true
    var isContentPushAnimaEnabled: Bool = true
    /// 是否内容视图有弹簧效果 默认 false
    var isContentBounces: Bool = false
    
    // MARK: - ---> Segment
    /// 初始化时设置默认下标值 默认 0
    var defaultIndex: Int = 0
    /// segment 边距 top,left 正数; bottom, right 负数 默认 .zero
    var edgeInset: UIEdgeInsets = .zero
    /// segment 高度 默认 44
    var height: CGFloat = 44
    /// segment 背景色 默认 .white
    var bgColor: UIColor = .white
    /// segment 阴影 一定程度上可以当做标题与内容视图的分界线使用
    ///
    /// - .shadowColor = shadowColor.cgColor
    /// - .shadowOpacity = 0.5
    /// - .shadowRadius = 0.75
    /// - .shadowOffset = CGSize(width: 0, height: 1.5)
    var isShowShadow: Bool = false
    /// 阴影颜色 默认 .lightGray
    var shadowColor: UIColor = .lightGray
    /// 是否显示标题与内容视图的分界线 默认 true
    var isShowBoundaryLine: Bool = true
    /// 分界线颜色 默认 .lightGray
    var boundaryLineColor: UIColor = .lightGray
    
    // MARK: - ---> Title
    /// 标题字体 默认 14
    var titleFont: UIFont = UIFont.systemFont(ofSize: 14, weight: .regular)
    /// 标题文本左右边距 默认 8
    var titleMargin: CGFloat = 8
    /// 默认标题宽度 默认 72
    var titleWidth: CGFloat = 72
    /// 缩放比例 默认 1.2 倍
    var titleScale: CGFloat = 1.2
    /// 标题文本颜色(标题颜色必须使用 RGB 颜色) 默认 .blue
    var titleColor: UIColor = .blue
    /// 标题文本选中后颜色(标题颜色必须使用 RGB 颜色) 默认 .red
    var titleSelectedColor: UIColor = .red
    
    // MARK: - ---> ExtraBtn
    /// 是否显示额外按钮 默认 false
    ///
    /// - 额外按键位置👉[+]
    /// - height * height 默认 44 * 44
    var isShowExtraBtn: Bool = false
    /// 额外按键 背景图 默认 nil
    var extraBtnBgImg: UIImage? = nil
    /// 额外按键 背景色 默认 .white
    var extraBtnBgColor: UIColor = UIColor(red: 0.9, green: 0.93, blue: 0.9, alpha: 1)
    /// 额外按键(默认宽度 44) 标题 默认 🌙
    var extraBtnTitle: String = "🌙"
    /// 额外按键 字体颜色 默认 .darkGray
    var extraBtnTextColor: UIColor = .red
    
    // MARK: - ---> Indicator
    /// 是否显示指示器 默认 false
    var isShowIndicator: Bool = true
    /// 指示器 类型 默认 line
    var indicatorType: ZHIndicatorType = .line
    /// 指示器 切换动画类型 默认 指示器跟随内容滑动实时改变
    var indicatorAnimaType: ZHIndicatorAnimaType = .default
    /// 指示器 宽度是否跟随标题自适应宽度 默认 true
    var isIndicatorAutoWidth: Bool = true
    
    /// 指示器 是否显示边线 默认 false
    var isIndicatorBorder: Bool = false
    /// 指示器 边线颜色 默认 .red
    var indicatorBorderColor: UIColor = .red
    /// 指示器 边线宽度 默认 1
    var indicatorBorderWidth: CGFloat = 1
    
    /// 指示器 切换动画时长 默认 0.25
    var indicatorDuration: TimeInterval = 0.25
    /// 指示器宽度(isIndicatorAutoWidth == false 时起作用) 默认 22
    var indicatorWidth: CGFloat = 22
    /// 指示器高度 默认 3
    var indicatorHeight: CGFloat = 3
    /// 指示器上下边距 默认 2
    var indicatorPadding: CGFloat = 2
    /// 指示器圆角 默认 0
    var indicatorCornerRadius: CGFloat = 0
    /// 指示器颜色 默认 .orange
    var indicatorColor: UIColor = .orange
    /// 自定义指示器视图(indicatorType == custom 时起作用, indicatorCustomView = customView),样式将完全由你掌控
    var indicatorCustomView: UIView = UIView()
}
